package com.binance.mbxgateway.api;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import com.binance.master.configs.FeignConfig;
import com.binance.master.constant.Constant;
import com.binance.master.models.APIRequest;
import com.binance.master.models.APIRequest.VoidBody;
import com.binance.master.models.APIResponse;
import com.binance.mbxgateway.vo.request.info.GetUserUrlReqeust;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

@Api
@FeignClient(name = Constant.MBX_GATEWAY_SERVICE, configuration = FeignConfig.class)
public interface InfoApi {
    /**
     * 
     * @param request
     * @return
     */
    @ApiOperation("获取wssUrl")
    @PostMapping("/public/wssUrl")
    APIResponse<String> getWssUrl(@RequestBody APIRequest<VoidBody> request);

    /**
     * 
     * @param request
     * @return
     */
    @ApiOperation("获取klineUrl")
    @PostMapping("/public/klineUrl")
    APIResponse<String> getKlineUrl(@RequestBody APIRequest<VoidBody> request);

    /**
     * 
     * @param request
     * @return
     */
    @ApiOperation("获取mktdataWssUrl")
    @PostMapping("/public/mktdataWssUrl")
    APIResponse<String> getMktdataWssUrl(@RequestBody APIRequest<VoidBody> request);

    /**
     * 
     * @param request
     * @return
     */
    @ApiOperation("获取serverTime")
    @PostMapping("/public/serverTime")
    APIResponse<Long> getServerTime(@RequestBody APIRequest<VoidBody> request);

    /**
     * 
     * @param request
     * @return
     */
    @ApiOperation("获取getBranding")
    @PostMapping("/public/getBranding")
    APIResponse<Boolean> getBranding(@RequestBody APIRequest<VoidBody> request);


    @PostMapping("/public/depthUrl")
    public APIResponse<String> getDepthUrl(@RequestBody APIRequest<VoidBody> request);

    @ApiOperation("")
    @PostMapping(value = {"/mgmt/userUrl"/* , "/public/userUrl" */})
    APIResponse<String> getUserUrl(@RequestBody APIRequest<GetUserUrlReqeust> request);
}
